package com.example.smartcitydemo.network.api

import com.example.smartcitydemo.bean.*
import retrofit2.http.*

/**
 * @PACKAGE_NAME: com.example.smartcitydemo.network.api
 * @NAME: Caleb.F
 * @DATE: 2021/11/3 8:26
 * @Email: 1919796283@qq.com
 * 不需要加token的接口
 */
interface NoAuthService {
    /**
     * 获取主页的轮播图
     */
    @GET("/prod-api/api/rotation/list?pageNum=1&pageSize=8&type=2")
    suspend fun getHomeBanner(): BaseListResponse<HomeBannerBean>

    /**
     * 获取主页全部服务
     */
    @GET("/prod-api/api/service/list")
    suspend fun getServiceList(): BaseListResponse<ServiceBean>

    /**
     * 获取新闻类型
     */
    @GET("/prod-api/press/category/list")
    suspend fun getNewsType(): BaseResponse<List<NewsTypBean>>

    /**
     * 获取新闻列表
     */
    @GET("/prod-api/press/press/list")
    suspend fun getNewsInfo(@Query("type") typeId: Int):BaseListResponse<NewsInfo>

    /**
     * 获取新闻详情
     */
    @GET("/prod-api/press/press/{newDetailId}")
    suspend fun getNewsDetail(@Path("newDetailId") newsDetailId:Int):BaseResponse<NewsInfo>


    /**
     *
     */
    @POST("/prod-api/api/login")
    suspend fun doLogin(@Body loginBean:LoginBean):SuccessBean


    @GET("/prod-api/press/comments/list")
    suspend fun getNewsReplyList(@Query("newsId") newsId:Int):BaseListResponse<ReplyInfo>

    /**
     * 新闻模糊搜索
     */
    @GET("/prod-api/press/press/list")
    suspend fun getSearchResult(@Query("title") title:String):BaseListResponse<NewsInfo>

    /**
     * 城市地铁轮播图
     * @return BaseListResponse<SubWayBannerBean>
     */
    @GET("/prod-api/api/metro/rotation/list")
    suspend fun getSubWayHomeBanner(): BaseListResponse<SubWayBannerBean>


    /**
     * 获取当前地理位置信息
     */
    @GET("/prod-api/api/common/gps/location")
    suspend fun getLocation(): BaseResponse<LocationBean>

    /**
     * 获取当日天气信息
     */
    @GET("/prod-api/api/common/weather/today")
    suspend fun getTodayWeatherInfo(): BaseResponse<WeatherInfo>

    /**
     * 获取地铁线路信息
     * @return BaseResponse<LineDataBean>
     */
    @GET("/prod-api/api/metro/line/list")
    suspend fun getLineInfo(): BaseResponse<List<LineDataBean>>

    /**
     * 获取全部站点信息
     */
    @GET("/prod-api/api/metro/step/list")
    suspend fun getFullStationList(): BaseResponse<List<StationDataBean>>


    /**
     * 获取具体站点信息
     */
    @GET("/prod-api/api/metro/step/list")
    suspend fun getStationList(@Query("lineId") lineId: Int): BaseResponse<List<StationDataBean>>

    /**
     * 根据站点名和线路信息获取起点、终点详细信息,该接口存在不合理的地方，无法只根据
     * 线路id获取到线路的详情信息,而是需要线路名和线路id才能获取到信息
     */
    @GET("/prod-api/api/metro/line")
    suspend fun getStartEndInfo(
        @Query("name") stationInfo: String,
        @Query("lineIds") lineIds: String
    ):
            BaseResponse<SubWayStartDetail>

    /**
     * 获取站点图片
     * @return BaseResponse<SubWayImage>
     */
    @GET("/prod-api/api/metro/city")
    suspend fun getStationImage(): BaseResponse<SubWayImage>

    /**
     * 获取当前站点的详细信息
     */
    @GET("prod-api/api/metro/list")
    suspend fun getCurrentStation(@Query("currentName") currentStation: String): BaseResponse<List<CurrentStationDetail>>


    /**
     * 获取地铁公告
     */
    @GET("/prod-api/api/metro/notice/list")
    suspend fun getSubWayNewsList(): BaseListResponse<SubWayNoticeBean>

    /**
     * 获取乘客须知
     */
    @GET("/prod-api/api/metro/statement")
    suspend fun getBroadMessage(@Query("type") type: Int): BaseResponse<SubWayPassengerNotice>

    /**
     * 获取所有招聘信息
     */
    @GET("/prod-api/api/job/post/list")
    suspend fun getJobListAll(): BaseListResponse<JobListBean>


    /**
     * 获取当前职位下的详情
     */
    @GET("/prod-api/api/job/post/list")
    suspend fun getJobListById(@Query("professionId") professionId: Int): BaseListResponse<JobListBean>

    /**
     * 按照[companyId]获取公司详情
     */
    @GET("/prod-api/api/job/company/{id}")
    suspend fun getCompanyDetail(@Path("id") id: Int): BaseResponse<ComPanyDetail>

    /**
     * 按照pos获取招聘详情
     */
    @GET("/prod-api/api/job/post/{id}")
    suspend fun getPostDetail(@Path("id") id: Int): BaseResponse<JobListBean>

    @GET("/prod-api/api/bus/line/list")
    suspend fun getLineParenData():BaseListResponse<ParentBusStation>

    @GET("/prod-api/api/bus/stop/list")
    suspend fun getChildLineData (@Query("linesId") linesId:Int):BaseListResponse<ChildBusStation>

    /**
     * 获取智慧巴士路线列表
     */
    @GET("/prod-api/api/bus/line/list")
    suspend fun getBusList(): BaseListResponse<BusListInfo>

    /**
     * 获取线路站点
     * @param lineId Int 线路id
     */
    @GET("/prod-api/api/bus/stop/list")
    suspend fun getBusStationDetail(@Query("linesId") id: Int): BaseListResponse<BusStationData>


}